import Vue from 'vue'
import App from './App.vue'
import router from './router'
import './plugins/element.js'
// 导入全局样式
import './assets/styles/global.css'
// 导入字体样式
import './assets/fonts/iconfont.css'
// 导入vue-table-with-tree-grid组件
import TreeTableGrid from 'vue-table-with-tree-grid'

// 设置全局的url
import axios from 'axios'
// 导入dayjs
import dayjs from 'dayjs'
// 导入富文本编辑器
import VueQuillEditor from 'vue-quill-editor'
// 导入nprogress
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'

import 'quill/dist/quill.core.css' // import styles
import 'quill/dist/quill.snow.css' // for snow theme
import 'quill/dist/quill.bubble.css' // for bubble theme

axios.defaults.baseURL = 'http://127.0.0.1:8888/api/private/v1/'
// 将axios挂载到vue的原型对象上
Vue.prototype.$http = axios
// 将axios挂载到vue的原型对象上
Vue.prototype.$dayjs = dayjs

Vue.config.productionTip = false

// 将TreeTableGrid挂载到vue。component当中
Vue.component('tree-table', TreeTableGrid)

Vue.use(VueQuillEditor)// 在这里使用富文本的挂载
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
  NProgress.start() // 开启Nprogress
  // 在发送请求之前在请求头中添加一个token名称可以自定义
  config.headers.Authorization = window.sessionStorage.getItem('token')
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

// 在相应拦截器当中配置
axios.interceptors.response.use(function (config) {
  NProgress.done() // 关闭NProgress
  return config
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error)
})

new Vue({
  router,
  render: h => h(App)
}).$mount('#app')
